package shuati.chuanzhibei.chuanzhi24;

import java.util.Scanner;

/**
 * @author : LdLtd
 * @Date : 2024/12/21
 * @Description:
 * 又是上班的早高峰，现在有几个人在公司1楼，他们想要乘坐电梯上楼。已知第;个人乘电梯到达目标楼层至电梯返回一楼所需要的时间为ai。
 * 公司里有两个电梯，但由于疫情防控需要，他们只能依次乘坐电梯。也就是说，对于每个人，他可以选择空闲的电梯乘坐，若此时无电梯空闲，
 * 则他需要等待。请问需要多长时间，所有的人才能都上楼(结束时两个电梯都回到一楼且一楼没有人)?
 * 输入描述
 * 第一行一个整数n，表示公司人数
 * 接下来一行,个整数4;，第i个数表示第;个人乘电梯到达目标楼层至电梯返回楼的时间。
 * 1 ≤n≤ 10',1<=ai <=10^3
 * 输出描述
 * 输出一个整数表示答案
 * 补充说明
 * |示例 1
 * 输入
 * 3
 * 1 2 3
 * 输出
 * 4
 * 说明
 */
public class P3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 总人数
        int[] ar = new int[n]; // 每个人的上下楼所需时间
        for (int i = 0; i < n; i++) {
            ar[i] = sc.nextInt();
        }
        if (n == 1) {
            // 只有1个人
            System.out.println(ar[0]);
        } else if (n == 2) {
            // 只有2个人，直接返回两人时间的总和
            System.out.println(ar[0] + ar[1]);
        } else {
            // 使用双电梯调度
            int t1 = ar[0]; // 第一个电梯总时间
            int t2 = ar[1]; // 第二个电梯总时间
            int index = 2; // 从第3个人开始排队

            while (index < n) {
                // 将下一个人分配给当前时间较小的电梯
                if (t1 <= t2) {
                    t1 += ar[index];
                } else {
                    t2 += ar[index];
                }
                index++;
            }
            // 最后返回两部电梯中较大的时间，表示整体完成的时间
            System.out.println(Math.max(t1, t2));
        }
    }
}
